#include <stdio.h>
#include <syslog.h>

int main(int argc, char **argv) {
    /**
      * void openlog(const char *ident, int option, int facility);
      * void syslog(int priority, const char *format, ...);
      * void closelog(void);
      *
      * openlog()  option选项
      * LOG_CONS
      * 如果将信息发送给syslogd守护进程时发生错误，直接将相关信息输出到终端
      * LOG_NDELAY
      * 立即打开与系统日志的连接（通常情况下，只有在产生第一条日志信息的情况下才会打开与日志系统的连接）
      * LOG_NOWAIT
      * 在记录日志信息时，不等待可能的子进程的创建
      * LOG_ODELAY
      * 类似于LOG_NDELAY参数，与系统日志的连接只有在syslog函数调用时才会创建
      * LOG_PERROR
      * 在将信息写入日志的同时，将信息发送到标准错误输出（POSIX.1-2001不支持该参数）
      * LOG_PID
      * 每条日志信息中都包括进程号
      *
      * facility选项
      * facility参数
      * syslog.conf中对应的facility取值
      * LOG_KERN : kern
      * LOG_USER : user
      * LOG_MAIL : mail
      * LOG_DAEMON : daemon
      * LOG_AUTH : auth
      * LOG_SYSLOG : syslog
      * LOG_LPR : lpr
      * LOG_NEWS : news
      * LOG_UUCP : uucp
      * LOG_CRON : cron
      * LOG_AUTHPRIV : authpriv
      * LOG_FTP : ftp
      * LOG_LOCAL0～LOG_LOCAL7 : local0～local7
      *
      *
      * syslog()  priority
      * priority参数 : syslog.conf中对应的level取值
      * LOG_EMERG : emerg
      * LOG_ALERT : alert
      * LOG_CRIT : crit
      * LOG_ERR : err
      * LOG_WARNING : warning
      * LOG_NOTICE : notice
      * LOG_INFO : info
      * LOG_DEBUG : debug
      **/
    syslog(LOG_ERR | LOG_USER, "test - %m/n");
    openlog("SyslogTest", LOG_CONS | LOG_PID, 0);
    syslog(LOG_DEBUG, "This is a syslog test message generated by program '%s'/n", argv[0]);
    closelog();
    return 0;
}
